﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Sinacor.Tools.Entidade
{
    [Serializable()]
    public class Modulo : Dominio<string>, IComparer<Modulo>
    {
        public Modulo() { }
        public Modulo(string pId, string pDescricao)
        {
            this.Id = pId;
            this.Descricao = pDescricao;
        }

        public Modulo(string pId, string pDescricao, int pInicioRangeMensagem, int pFimRangeMensagem)
        {
            this.Id = pId;
            this.Descricao = pDescricao;
            this._inicioRangeMensagem = pInicioRangeMensagem;
            this._fimRangeMensagem = pFimRangeMensagem;
        }

        private int _inicioRangeMensagem = 0;
        public int InicioRangeMensagem
        {
            get { return this._inicioRangeMensagem; }
            set { this._inicioRangeMensagem = value; }
        }

        private int _fimRangeMensagem = 0;
        public int FimRangeMensagem
        {
            get { return this._fimRangeMensagem; }
            set { this._fimRangeMensagem = value; }
        }

        private static string _propriedadeSort = string.Empty;
        public static string PropriedadeSort
        {
            set { _propriedadeSort = value; }
        }
        
        #region IComparer<Modulo> Members

        public int Compare(Modulo x, Modulo y)
        {
            int resultado = 0;
            switch (_propriedadeSort.ToLower())
            {
                case "descricao":
                    resultado = x.Descricao.CompareTo(y.Descricao);
                    break;

                default:
                    resultado = string.Compare(x.Id, y.Id);
                break;

            }
            return resultado; 
        }

        #endregion
    }
}
